package com.uam.utils;

import com.uam.common.exception.UamException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
 * 文字转字符串类
 * @author heguanglong
 * @description: TODO
 * @date 2021/6/3
 */
@Slf4j
public class FileToStringUtils {
    /**
     * 读取txt文件的内容
     *
     * @param file 想要读取的文件对象
     * @return 返回文件内容
     */
    public static String txt2String(File file) {
        StringBuilder result = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String s = null;
            while ((s = br.readLine()) != null) {
                result.append(System.lineSeparator() + s);
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw UamException.fileTypeError("文件解析错误");
        }
        return result.toString();
    }

    /**
     * 读取txt文件的内容
     *
     * @param fileUrl 想要读取的文件对象
     * @return 返回文件内容
     */
    public static String txt2String(String fileUrl) {
        File file = new File(fileUrl);
        log.info("文件路径："+fileUrl);
        if(!file.exists()){
            throw UamException.fileTypeError("文件不存在:"+fileUrl);
        }

        if(!file.isFile()){
            throw UamException.fileTypeError("解析的url必须是一个文件 "+fileUrl);
        }

        String data= txt2String(file);
        if(StringUtils.isBlank(data)){
            throw UamException.fileTypeError("文件数据内容不能为空！");
        }
        return data;
    }

    public static String txt2String(MultipartFile fileSrc) {
        File file = new File("tmp.csv");

        try {
            FileUtils.copyInputStreamToFile(fileSrc.getInputStream(), file);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        StringBuilder result = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String s = null;
            while ((s = br.readLine()) != null) {
                result.append( s);
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw UamException.fileTypeError("文件解析错误");
        }
        return result.toString();
    }
}
